/*
	GND
	VCC 3.3V
	SCL PB8    //对应SCL
	SDA PB9    //对应SDA
	RES PB7    //对应RES
	DC  PA4
	CS  PB6    //对应CS
	BL  3.3V
	
*/


#include <stdio.h>
#include <string.h>
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "interface.h"
#include "main.h"
#include "lcd.h" 

#include "init/014_001_ILI9163_F01505-01U_init.h"
#include "BlockWrite/blockwrite_default.h"	
//==================================================================
 void TEST_STAND()	//测试程序  
 {
		DispFrame();							//显示高亮屏幕
		StopDelay(Delay_Time);		//延时
	 
		DispGrayHor16();					//显示16色水平亮条
		StopDelay(Delay_Time);		//延时

	 
		DispBand();								//显示水平亮条
		StopDelay(Delay_Time);		//延时
	 
		DispColor(RED);						//显示红色
		StopDelay(Delay_Time);		//延时
	 
		DispColor(GREEN);					//显示绿色
		StopDelay(Delay_Time);		//延时
	 
		DispColor(BLUE);					//显示蓝色
		StopDelay(Delay_Time);		//延时
	 
		DispColor(WHITE);					//显示白色
		StopDelay(Delay_Time);		//延时
	 
		DispColor(BLACK);					//显示黑色
		StopDelay(Delay_Time);		//延时
}
 void TEST_STAND1111()	//测试程序  
 {
		DispFrame();							//显示高亮屏幕
		StopDelay(Delay_Time);		//延时
	 
		DispGrayHor16();					//显示16色水平亮条
		StopDelay(Delay_Time);		//延时
	 
//		Disp_Flash_Pic_Num(0);  	//显示图片
//		StopDelay(Delay_Time);		//延时
	 
		DispBand();								//显示水平亮条
		StopDelay(Delay_Time);		//延时
	 
		DispColor(RED);						//显示红色
		StopDelay(Delay_Time);		//延时
	 
		DispColor(GREEN);					//显示绿色
		StopDelay(Delay_Time);		//延时
	 
		DispColor(BLUE);					//显示蓝色
		StopDelay(Delay_Time);		//延时
	 
		DispColor(WHITE);					//显示白色
		StopDelay(Delay_Time);		//延时
	 
		DispColor(BLACK);					//显示黑色
		StopDelay(Delay_Time);		//延时
}
 //==========================================
extern u16 POINT_COLOR;
int main(void)
{	
	SystemInit();//初始化RCC 设置系统频率为72MHZ
	delay_init();	//延时初始化
	uart_init(256000);	//串口初始化
	LCD_Init();		

	POINT_COLOR = RED;
	LCD_ShowString(50,80,100,16,16,"123");
  
  while(1) 
	{
		// 保持显示"123"，不做其他操作
	}
}

void HSI_SetSysClock(uint32_t pllmul)
{
    __IO uint32_t HSIStartUpStatus = 0;

    // 复位RCC并配置为系统时钟
    RCC_DeInit();

    //启用HSI
    RCC_HSICmd(ENABLE);

    // 等待 HSI 稳定
    HSIStartUpStatus = RCC->CR & RCC_CR_HSIRDY;

    // 只有 HSI 启动成功后才会执行以下代码
    if (HSIStartUpStatus == RCC_CR_HSIRDY) {
    //-------------------------------------------------------------//
        // 如果使用外部晶振，则不需要配置，也不会影响
        // 启用预取指功能
        //FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

        // SYSCLK分频系数为1，HCLK = SYSCLK
        RCC_HCLKConfig(RCC_SYSCLK_Div1);

        // APB2预分频系数为1，PCLK2 = HCLK
        RCC_PCLK2Config(RCC_HCLK_Div1);

        // APB1预分频系数为1，PCLK1 = HCLK/2
        RCC_PCLK1Config(RCC_HCLK_Div2);

        //-----------使用外部时钟需要配置以下内容-------------------//
        // 如果使用PLL，则选择PLL为系统时钟
        // PLLCLK = 4MHz * pllmul
        RCC_PLLConfig(RCC_PLLSource_HSI_Div2, pllmul);
    //-- -----------------------------------------------------//

        // 启用PLL
        RCC_PLLCmd(ENABLE);

        // 等待PLL稳定
        while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {
        }

        // PLL稳定后，将PLL作为系统时钟SYSCLK
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

        // 获取时钟稳定标志，确保PLLCLK被选中作为系统时钟
        while (RCC_GetSYSCLKSource() != 0x08) {
        }
    } else {
        // 如果HSI启动失败，则程序将卡在这里，并且不会执行以下代码
        // 如果HSE启动失败或高频晶振不起振，则程序将使用HSI作为系统时钟
        // HSI内部8MHz时钟
        while (1) {
        }
    }
}
